import { ElMessage, ElMessageBox } from 'element-plus'
import api from '@/utils/api'
import { getToken } from '@/utils/auth'

/**
 * 检查中介申请状态并处理跳转
 * @param {Object} router - Vue Router 实例
 * @returns {Promise<boolean>} - 是否允许进入申请页面
 */
export const checkAgentStatusAndNavigate = async (router) => {
  try {
    const response = await api.get('/agent/auth/result', {
      headers: {
        'info': getToken()
      }
    })

    if (response.data && response.data.code === '200' && response.data.data) {
      const data = response.data.data  // 修复API响应结构
      // 使用verifyStatus字段而不是certifyStatus
      const statusValue = data.verifyStatus !== undefined ? data.verifyStatus : data.certifyStatus
      const verifyStatus = parseInt(statusValue)

      console.log('工具函数检查到的申请状态:', verifyStatus, '原始值:', statusValue)

      if (verifyStatus === 2) {
        // 已通过审核
        ElMessageBox.alert(
          '您的中介申请已通过审核，现在可以使用中介功能了！',
          '申请已通过',
          {
            confirmButtonText: '查看状态',
            type: 'success',
            callback: () => {
              router.push('/agent/status')
            }
          }
        )
        return false
      } else if (verifyStatus === 1) {
        // 审核中
        ElMessageBox.alert(
          '您的中介申请正在审核中，管理员将在1-3个工作日内完成审核。您可以在申请状态页面查看详细进度。',
          '申请审核中',
          {
            confirmButtonText: '查看状态',
            type: 'warning',
            callback: () => {
              router.push('/agent/status')
            }
          }
        )
        return false
      } else if (verifyStatus === 0) {
        // 审核未通过，可以重新申请
        const result = await ElMessageBox.confirm(
          '您之前的申请未通过审核，可以修改申请信息后重新提交。是否重新申请？',
          '可以重新申请',
          {
            confirmButtonText: '重新申请',
            cancelButtonText: '查看状态',
            type: 'info'
          }
        ).catch(() => {
          // 用户选择查看状态
          router.push('/agent/status')
          return false
        })
        
        if (result === 'confirm') {
          // 用户选择重新申请
          router.push('/agent/apply')
        }
        return false
      }
    }

    // 没有申请记录，可以申请
    router.push('/agent/apply')
    return true
  } catch (error) {
    // 没有申请记录或其他错误，允许申请
    console.log('检查申请状态失败，允许申请:', error)
    router.push('/agent/apply')
    return true
  }
}

/**
 * 简化版的中介申请跳转函数
 * @param {Object} router - Vue Router 实例
 */
export const goToAgentApply = async (router) => {
  await checkAgentStatusAndNavigate(router)
}
